package org.springmole.business.dao;

import java.util.List;

import org.springmole.business.bean.DbConnection;
import org.springmole.business.bean.DbConnectionResultData;
import org.springmole.business.bean.QueryRequest;
import org.springmole.business.bean.Result;
import org.springmole.business.bean.SchemaResultData;
import org.springmole.business.bean.query.QueryResultData;
import org.springmole.business.bean.query.SqlOrderBy;
import org.w3c.dom.Document;


/**
 * Define all default resources access. 
 * It means the implementor of this class will work in any Spring project
 * because it require only a descent java runtime to use JDBC, IO, ...<br/>
 * All others DAO require specific dependency to be use.
 */
public interface SpringMoleDao {
	
	public Result<DbConnectionResultData> openDbConnection(DbConnection dbConnection);
	
	public Result<SchemaResultData> openSchema(DbConnection dbConnection, String schemaName);
	
	
	public Result<QueryResultData> executeQuery(QueryRequest queryRequest, Document document);
	
	
	public String getSqlOrderBy(List<SqlOrderBy> sqlOrderByList);
	
}
